通常我們最初存取目標是以基本的權限,但最基本的權限沒辦法讓我們完全的控制目標,我們會需要再透過一個本機的漏洞來將權限提升到 root ( Linux ) 或 Adminisrator/SYSTEM ( Windows ) ,今天我就來提幾個常見的提權方法。
這邊可以回想一下我們取得基本權限的方法,我們透過漏洞利用的程式取得權限,那同理我們也可以再透過漏洞利用在做一次一樣的事,所以再提權前我們可以先利用目前的權限來看看目標上有沒有可利用的漏洞,並進一步利用這些漏洞,而我們可以從什麼地方找起,在初學時,系統配置與檔案的一些機制都還不清楚時我們可以來參考 PayloadsAllTheThings 和 HackTricks 上的資源,這兩個網站上記載了針對 Linux 和 Windows 的提權及配置相關的檢查清單及其實作的 command。
檢查的方法有兩種,用自動的腳本和手動檢查,自動腳本是透過腳本來自動運行一些 command 來做到自動的枚舉,常用的枚舉腳本有 LinEnum,而手動的部分我們則是可以用一些指令來檢查如 : 系統資訊 . 核心版本 . 當前使用者與其 Sudo 權限 . 檢查歷史紀錄 等等,自動腳本雖然可以放著讓它自動執行但也容易被防毒或者是監控的軟體給偵測到,這時就體現出手動的優點,手動可以比較針對性地去做某些動作像是系統資訊,然後再從獲取的系統資訊做下一步行動。
這邊舉出幾個具體的方向,我們可以根據這幾個方向去做檢查,今天也大概簡單介紹一下這幾項。
當我們檢查完目標的作業系統版本後,可以查詢這個版本是否有核心漏洞,若目標沒有定時更新系統或者安裝漏洞修補的補丁時,就可以做到利用核心漏洞的攻擊。
在目標上可能根據裝置的用途不同會裝有不同的工具,有些可能是年代久遠且已經停止更新的軟體或者是有雙重用途的工具 ( 例如 : 資管部門的裝置可能會裝有掃描軟體等 ),檢查這些檔案是否有可以利用的可能。
Windows 可以檢查系統碟內 Program File 目錄
Linux 則是可以用 dpkg -l 來查看安裝的軟體
在 Linux 和 Windows 系統中,都有方法可以讓腳本以特定時間間隔執行以執行任務,而有些時候因為配置不夠安全的原因可能導致額外設定的排程沒有設定存取權限,以基本的權限也能做編輯,而這些排程常常都是以高權限來執行。
今天提到了實現權限提升的幾個方向,由於目前我接觸的靶機還比較少沒辦法直接舉例來演示實作的方面,若未來有更多的經驗會再另外寫一篇文章來做講解,另外補充一下在上面提到的 PayloadsAllTheThings 裡面其實不只紀載提權相關的資訊也有很多攻擊載荷 ( Payload ) 的資源,像是 SQL injection . DOS . XSS 等等,其實包含了相當大量的內容在裡面有關於特定領域的資源也可以在裡面找找看,相信大家以後也會很常用到裡面的內容,那麼今天就先告一個段落。